home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
wb
/
czesc_4
/
vark15
/
utils a-o
/
dd1066.lha
/
DunderDir
/
Sources
/
Opt.e
next >
Wrap
Text File
|
1996-04-30
|
2KB
|
114 lines
/*
* Opt © 1995 Jimmie Matsson, All Rights Reserved
*
* Version Date Comment
* 1.00 03-Jul-95 First release
* 1.01 05-Jul-95 Made some small changes
*
* This source is Public Domain. That means you can
* do whatever you want to with it =)
*
*/
MODULE 'dos/dos'
MODULE 'dos/var'
ENUM OPTSOPT, REMOPT, LOCALOPT, GLOBALOPT
PROC main()
DEF rdargs, opts:PTR TO LONG, var[150]:STRING
DEF template[50]:STRING, version[50]:STRING
StrCopy(version, '$VER: Opt 1.01 (05-Jul-95) © 1995 Jimmie Matsson')
StrCopy(template, 'OPTS=OPTIONS/A,REM=REMOVE/S,LOCAL/S,GLOBAL/S')
opts := [0,0,0,0]
IF rdargs := ReadArgs(template, opts, NIL)
IF opts[LOCALOPT] <> 0 AND opts[GLOBALOPT] <> 0
WriteF('Make up your mind, LOCAL or GLOBAL?\n')
FreeArgs(rdargs)
CleanUp(RETURN_FAIL)
ENDIF
IF (opts[GLOBALOPT] <> 0) OR ((GetVar('DDOpts', var, 150, GVF_LOCAL_ONLY)) < 0)
IF (GetVar('DDOpts', var, 150, GVF_GLOBAL_ONLY)) < 0
WriteF('Can''t find the DDOpts variable, use "Set" or "SetEnv"\n')
WriteF('to create it before using this command.\n')
FreeArgs(rdargs)
CleanUp(RETURN_FAIL)
ENDIF
opts[GLOBALOPT] := TRUE
ELSE
opts[LOCALOPT] := TRUE
ENDIF
IF opts[REMOPT] = FALSE
/* Add some options */
MOVEA.L var,A0
MOVEA.L opts,A1
MOVEA.L (A1),A1
cte: TST.B (A0)+
BNE.S cte
SUBQ.L #1,A0
BRA.S cmp
tst: ADDQ.L #1,A1
TST.B (A1)
BEQ.S fin
cmp: CMPI.B #"-",(A1)
BNE.S not
ADDQ.L #1,A1
not: MOVE.B #" ",(A0)+
MOVE.B #"-",(A0)+
cs: CMPI.B #" ",(A1)
BEQ.S tst
MOVE.B (A1)+,(A0)+
BNE.S cs
ELSE
/* Delete some options */
start: MOVEA.L var,A0
nxt: MOVEA.L opts,A1
MOVEA.L (A1),A1
nxta1: MOVE.B (A1)+,D0
BEQ.S nxta0
CMP.B (A0),D0
BNE.S nxta1
BRA.S del
nxta0: ADDQ.L #1,A0
TST.B (A0)
BNE.S nxt
BRA.S del2
del: MOVE.B 1(A0),(A0)+
BNE.S del
BRA.S start
/* This will delete all lonley "-" */
del2: MOVEA.L var,A0
tstnxt: TST.B (A0)
BEQ.S fin
CMPI.B #"-",(A0)+
BNE.S tstnxt
CMPI.B #" ",(A0)
BEQ.S del3
CMPI.B #"-",(A0)
BEQ.S del3
TST.B (A0)
BNE.S tstnxt
MOVE.B (A0),-(A0)
BRA.S del2
del3: MOVE.B 1(A0),(A0)+
BNE.S del3
BRA.S del2
ENDIF
fin:
SetVar('DDOpts', var, -1, IF opts[LOCALOPT] THEN
GVF_LOCAL_ONLY ELSE GVF_GLOBAL_ONLY)
FreeArgs(rdargs)
ELSE
PrintFault(IoErr(), NIL)
CleanUp(RETURN_FAIL)
ENDIF
ENDPROC